package com.itheima.HomeWork_day11;
/*
// toList和toSet方法演示
 */

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamColl01 {
    public static void main(String[] args) {

        //创建一个集合
        ArrayList<Integer> list = new ArrayList<>();

        //添加数据
        for (int i = 1; i <= 10; i++) {
            list.add(i);
        }

        //filter负责过滤数据的.
        //collect负责收集数据.
        //获取流中剩余的数据,但是他不负责创建容器,也不负责把数据添加到容器中.



        method1(list);

       Set<Integer> map = method2(list);



        /**
 Stream流的收集方法 toMap方法演示
 创建一个ArrayList集合，并添加以下字符串。字符串中前面是姓名，后面是年龄
 "zhangsan,23"
 "lisi,24"
 "wangwu,25"
 保留年龄大于等于24岁的人，并将结果收集到Map集合中，姓名为键，年龄为值
 */

        //创建集合使用toMap收集方法,将list集合中的数据收集并打印

        ArrayList<String> li = new ArrayList<>();

        li.add("张三,21");
        li.add("李四,25");
        li.add("王五,30");
        li.add("赵柳,22");
        li.add("前期,24");


        method3(li);


    }

    private static void method3(ArrayList<String> li) {
        //使用流遍历集合
        Map<String, Integer> map1 = li.stream().filter(s -> {
            //分割集合
            String[] split = s.split(",");
            //获得集合中的第二个元素并转换类型
            int age = Integer.parseInt(split[1]);
            //判断年龄
            return age >= 24;

            //使用lambda表达式进行数据收集
        }).collect(Collectors.toMap(
                s -> s.split(",")[0],
                s -> Integer.parseInt(s.split(",")[1])
        ));

        //打印输出集合
        System.out.println(map1);
    }

    private static Set<Integer> method2(ArrayList<Integer> list) {
        //获取偶数集合,到set集合中
        Set<Integer> map = list.stream().filter(num -> num % 2 == 0).
                collect(Collectors.toSet());
        System.out.println(map);


        System.out.println("=========================================");
        return map;
    }

    private static void method1(ArrayList<Integer> list) {
        //获取集合中的偶数,添加到list集合中
        List<Integer> lis = list.stream().filter(num -> num % 2 == 0).
                //收集偶数到list集合
                        collect(Collectors.toList());

        //输出偶数收集到偶数集合
        System.out.println(lis);

        System.out.println("-------------------------------------");
    }
}
